package com.atguigu.sparkcore.day03.action

import org.apache.spark.rdd.RDD
import org.apache.spark.{SparkConf, SparkContext}

/**
 * Author atguigu
 * Date 2020/10/30 9:18
 */
object ForeachDemo {
    def main(args: Array[String]): Unit = {
        val conf: SparkConf = new SparkConf().setAppName("ForeachDemo").setMaster("local[2]")
        val sc: SparkContext = new SparkContext(conf)
        val list1 = List(30, 50, 70, 60, 10, 20)
        val rdd1: RDD[Int] = sc.parallelize(list1, 3)
        // 一亿条
    
        /*rdd1.foreach(x => {
            // 建立连接
            
            // 使用连接写数据
            // 关闭连接
        })*/
        rdd1.foreachPartition((it: Iterator[Int]) => {
            println("foreachPartition....")
            // 建立连接
            it.foreach(x => {
                // 写出去
            })
            // 关闭连接
        })
        
       
        sc.stop()
        
    }
}
/*
map  转换算子, 传递的函数需要有返回值
foreach 行动算子,  传递的函数不需要有返回值

mapPartitions
    转换算子, 传递的函数需要有返回值, 返回值必须是一个迭代器Iterator
foreachPartition
    行动算子,  传递的函数不需要有返回值



 */